# @Time : 2021/7/30 10:25
# @Author : xiashuobad
# @File : list_model_class_color.py
# @Software: PyCharm
"""
/**
 * _ooOoo_
 * o8888888o
 * 88" . "88
 * (| -_- |)
 *  O\ = /O
 * ___/`---'\____
 * .   ' \\| |// `.
 * / \\||| : |||// \
 * / _||||| -:- |||||- \
 * | | \\\ - /// | |
 * | \_| ''\---/'' | |
 * \ .-\__ `-` ___/-. /
 * ___`. .' /--.--\ `. . __
 * ."" '< `.___\_<|>_/___.' >'"".
 * | | : `- \`.;`\ _ /`;.`/ - ` : | |
 * \ \ `-. \_ __\ /__ _/ .-` / /
 * ======`-.____`-.___\_____/___.-`____.-'======
 * `=---=' bug泛滥 佛已瘫痪
"""
# 模型字典参数说明
from constant import Color, OLD_NORM_CFG, NEW_NORM_CFG

# from tools import tta

"""
下面是一个模板：
dict_model = dict()
dict_model['三调全要素'] = {
    'models_info': ['multi_class_sandiao.pt',
                 {'model_path': 'building_sandiao.pt','class_ids': [1], 'norm_cfg': OLD_NORM_CFG},
                 {'model_path': 'sandiao_road.pt', 'class_ids': [2]}],
    'model_merge_mode': 'mean',
    'class_info': ['背景', '居民地', '道路', '耕地', {'一级类别':'植物','二级类别':'林地'}, '植被', '湿地', '水域'],
    'color_map': {
        0:(0, 0, 0),  # 黑色，背景
        1:(255, 0, 0),  # 红色，建筑
        2:(255, 255, 255),  # 白色，道路
        3:(0, 255, 0),  # 绿色，耕地
        4:(32, 64, 0),  # 深绿色，林地
        5:(32, 64, 0),  # 深绿色，植被
        6:(128, 128, 128),  # 灰色，湿地
        7(0, 0, 255),  # 蓝色，水域
    },
    'shp_type': '面',
    'input_size'：(512,512),
    'threshold':0.5
}

各个参数说明：
    模型名称：每个模型有一个名称，测试代码调用时，根据模型名称取该模型的所有参数字典
    
    models_info：必要参数，标准格式是 [
                                    {
                                    'jit_model_path': '模型权重文件路径1',
                                    'class_ids': [该模型的类别索引对应于总模型中的类别id索引],
                                    'norm_cfg': OLD_NORM_CFG,
                                    },
                                    {'jit_model_path': '模型权重文件路径2','class_ids': [该模型的类别索引对应于总模型中的类别id索引]},...]，
        支持任意个模型的结果合并操作，用列表
        当只有一个单模型时，为了简化格式，可以直接写模型权重文件路径（字符串）就行，例如：
            'models_info': 'building_sandiao.pt'  为设置的其他参数会自动为默认值
        除'jit_model_path'参数外，其他参数未设置时，均为默认值，'class_ids'默认值为[1,2,...,num_class-1], 'norm_cfg'默认为NEW_NORM_CFG,
        可选值还有 OLD_NORM_CFG
    model_merge_mode: 默认为'mean'，可选值还有：'max', 'last'
        
    class_info：必要参数，列表或元组，内部元素可以是字符串也可以是字典，当为字符串时，生成的矢量结果中对应属性字段列表中的第一个字段，为字典时，
                一个键代表一个属性字段，例如‘一级类别’，‘二级类别’等
    
    color_map：可选参数，字典类型，键代表像素灰度值，对应的值为要映射的rgb颜色，支持pil，rasterio格式。 当设置该参数时，测试栅格结果会写入rgb彩色映射效果，
            不设置则不写入颜色映射。
    
    
    shp_type：可选参数，默认值是‘面’，字符串类型，‘点’，‘线’，‘面’，或者三者的组合，中间用任意符号隔开就行，例如道路提取时要求同时生成面和线，则可以写 ‘面，线’
    
    tta: 多尺度测试，需要导入tta包：from tools import tta，示例：
        'tta': dict(transforms=tta.aliases.multiscale_transform(scales=[0.75, 1, 1.25]), merge_mode='mean')
        
    input_size：模型输入size，格式为：(宽，高)
    threshold: 前景目标的预测阈值
    
    
"""
dict_model = dict()

dict_model['建筑'] = {
    'models_info': '',
    'class_info': ['背景', '建筑'],
    'color_map': {
        0: Color.BLACK.value,  # 黑色，背景
        1: Color.RED.value  # 红色，建筑
    },
}
